package cc.rengu.igas.bsps.common.dao;

import cc.rengu.igas.bsps.common.entity.MchntBindInfo;

import java.util.List;

/**
 * 商户绑定信息操作接口.
 */
public interface BspsMchntBindInfoMapper {

    /**
     * 根据用户标识查询商户绑定信息
     *
     * @param instId 机构标识
     * @param userId 用户标识
     * @return 商户绑定信息
     * @throws Exception 异常
     */
    List<MchntBindInfo> selectBspsMchntBindInfoListByUserId(String instId, String userId) throws Exception;


    /**
     * 根据角色查询商户绑定信息
     *
     * @param instId  机构标识
     * @param mchntNo 用户标识
     * @return 商户绑定信息
     * @throws Exception 异常
     */
    List<MchntBindInfo> selectBspsMchntBindInfoByMchntNo(String instId, String mchntNo) throws Exception;


    /**
     * 根据角色查询商户绑定信息
     *
     * @param instId   机构标识
     * @param mchntNo  用户标识
     * @param roleType 角色
     * @return 商户绑定信息
     * @throws Exception 异常
     */
    List<MchntBindInfo> selectBspsMchntBindInfoByMchntNoAndRoleType(String instId, String mchntNo, String roleType) throws Exception;


    /**
     * 插入商户绑定关系表
     *
     * @param mchntBindInfo 商户绑定关系
     * @return 结果
     * @throws Exception 异常
     */
    int insertBspsMchntBindInfo(MchntBindInfo mchntBindInfo) throws Exception;

    /**
     * 根据用户标识，商户号查询商户绑定信息
     *
     * @param instId  机构标识
     * @param userId  用户标识
     * @param mchntNo 商户号
     * @return 商户绑定信息
     * @throws Exception 异常
     */
    MchntBindInfo selectBspsMchntBindInfoListByUserIdAndMchntNo(String instId, String userId, String mchntNo) throws Exception;


    /**
     * 根据用户标识和商户号查询商户绑定信息
     *
     * @param instId  机构标识
     * @param userId  用户标识
     * @param mchntNo 商户号
     * @return 商户绑定信列表
     * @throws Exception 异常
     */
    List<MchntBindInfo> selectBspsMchntBindInfoListByMchntNoAndChainMchntNo(String instId, String userId, String mchntNo) throws Exception;


    /**
     * 解绑收银员
     *
     * @param instId        机构标识
     * @param mchntBindInfo 商户绑定信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateBspsMchntBindInfoStatusByUserIdAndMchntNo(String instId, MchntBindInfo mchntBindInfo) throws Exception;

    /**
     * 收银员消息设置
     *
     * @param mchntBindInfo 商户绑定信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateBspsMchntBindInfoMsgUserByPrimaryKey(MchntBindInfo mchntBindInfo) throws Exception;

    /**
     * 修改收银员信息
     *
     * @param mchntBindInfo 商户绑定信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateBspsMchntBindInfo(MchntBindInfo mchntBindInfo) throws Exception;

    /**
     * 更新绑定状态信息
     *
     * @param instId 法人行号
     * @param userId 用户ID
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateBspsMchntBindInfoStatusByUserId(String instId, String userId) throws Exception;
}
